<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
    <title>Document</title>
</head>
<body>
    <!-- 准备一个容器 -->
    <div id="root">
       <!-- 
        插值语法中可以书写任意表达式 和 vm身上的属性和方法(data中的数据在vm身上也有存放)
          - 表达式和语句典型的区别就是,表达式有返回值,语句没有
      -->
      <h1>{{msg}}</h1>
      <h1>{{count + 1}}</h1>
      <!-- 
        不能直接在模板中修改数据，因为数据一改，视图重新渲染，然后又遇到的数据修改，然后再重新渲染，达成死循环
       -->
      <!-- <h1>{{count++}}</h1> -->
    </div>

</body>
<script>
    Vue.config.productionTip = false // 阻止 Vue在启动时生成生产提示
    
    //  new 出一个 vue实例对象
    const vm = new Vue({
        // 需要挂载的容器
        el: "#app",
        // 数据
        data: {
          msg: "hello Vue",
          count: 0,
        },
      });

      console.log(vm, "vm");// Vue 这个构造函数 new 出来的 实例对象
    /**
     * 提问：new的四步过程
     * 个人解答：1-定义一个myNew函数
     *          2-在函数里面创建一个新对象obj
     *          3-obj.__proto__ = myNew.prototype 
     *          4-确定this指向 let result = myNew.bind(obj)
     *          5-返回result
    */
</script>

</html>